#ifndef _THREAD_H_
#define _THREAD_H_

#include "ThreadDef.h"
#include "TaskQueue.h"

class Thread
{
public:
	enum ThreadStatus
	{
		INVALID = 0,
		RUNNING,
		SUSPENDED,
		WAITING,
	};

	Thread(){}
	virtual ~Thread(){}

	virtual uint32_t get_handle() = 0;
	virtual uint32_t get_id() = 0;
	virtual ThreadStatus get_status() = 0;
	virtual ThreadStatus run() = 0;
	virtual ThreadStatus suspend() = 0;
	virtual void destroy() = 0;
	virtual TaskQueue * get_task_queue() const = 0;
	virtual void set_task_queue(TaskQueue *task) = 0;
};

#endif
